package com.xyoto.community.mapper.main;

import com.xyoto.community.entity.main.HotTopic;
import com.xyoto.community.entity.main.Topic;
import com.xyoto.community.entity.main.TopicFollow;
import com.xyoto.community.po.TopicHotNumPO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface TopicFollowMapper {
    /**
     * 获取话题关注数
     *
     * @param TopicId      话题id
     * @param followStatus 关注状态
     * @return 关注数
     */
    Integer countTopicFollow(Integer TopicId, short followStatus);

    /**
     * 根据用户id和话题id查话题关注详情
     *
     * @param userId
     * @param topicId
     * @return
     */
    TopicFollow selectOneByUserIdAndTopicId(@Param("userId") Integer userId, @Param("topicId") Integer topicId);

    /**
     * 根据话题关注实体更新话题关注
     *
     * @param topicFollow
     * @return
     */
    Integer updateTopicFollow(TopicFollow topicFollow);

    /**
     * 插入一条话题关注记录
     *
     * @param topicFollow
     * @return
     */
    Integer insertTopicFollow(TopicFollow topicFollow);

    /**
     * 用户是否关注
     *
     * @param topicId 话题id
     * @param userId  用户id
     * @return 用户关注状态
     */
    Short getUserFollowStatus(Integer topicId, Integer userId);

    /**
     * 获取热门话题的关注数
     *
     * @param list
     * @return
     */
    List<TopicHotNumPO> getHotTopicFollow(List<TopicHotNumPO> list);

    /**
     * 根据话题id统计关注该话题的人数
     * @param topicId
     * @return
     */
    Integer countFollowByTopicId(Integer topicId);

    /**
     * 根据用户id查询用户关注的话题
     * @param userId
     * @return
     */
    List<Integer> selectTopicIdListByUserIdAndFollowStatus(Integer userId,Short followStatus);

}
